/*
 * Activiti Modeler component part of the Activiti project
 * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.

 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */

/*
 * Assignment
 */
var KisBpmAssignmentCtrl = [ '$scope', '$modal', function($scope, $modal) {

    // Config for the modal window
    var opts = {
        template:  'editor-app/configuration/properties/assignment-popup.html?version=' + Date.now(),
        scope: $scope
    };

    // Open the dialog
    $modal(opts);
}];

var KisBpmAssignmentPopupCtrl = [ '$scope',"$http",'$rootScope','$routeParams', function($scope,$http,$rootScope,$routeParams) {
    	
    // Put json representing assignment on scope
    if ($scope.property.value !== undefined && $scope.property.value !== null
        && $scope.property.value.assignment !== undefined
        && $scope.property.value.assignment !== null) 
    {
        $scope.assignment = $scope.property.value.assignment;
    } else {
        $scope.assignment = {};
    }

//公司select
    if ($scope.assignment.candidateRoles == undefined || $scope.assignment.candidateRoles.length == 0)
    {
        $scope.assignment.candidateRoles = [{value: ''}];
    }

    // Click handler for + button after enum value
    var roleValueIndex = 1;
    $scope.addCandidateUserValue = function(index) {
        $scope.assignment.candidateRoles.splice(index + 1, 0, {value: 'value ' + roleValueIndex++});
    };

    // Click handler for - button after enum value
    $scope.removeCandidateUserValue = function(index) {
        $scope.assignment.candidateRoles.splice(index, 1);
    };


    //-----

    if ($scope.assignment.candidatePeoples == undefined || $scope.assignment.candidatePeoples.length == 0)
    {
        $scope.assignment.candidatePeoples = [{value: ''}];
    }

    // Click handler for + button after enum value
    var peopleValueIndex = 1;
    $scope.addCandidateUserValue = function(index) {
        $scope.assignment.candidatePeoples.splice(index + 1, 0, {value: 'value ' + peopleValueIndex++});
    };

    // Click handler for - button after enum value
    $scope.removeCandidateUserValue = function(index) {
        $scope.assignment.candidatePeoples.splice(index, 1);
    };
    //----



    if ($scope.assignment.candidateUsers == undefined || $scope.assignment.candidateUsers.length == 0)
    {
    	$scope.assignment.candidateUsers = [{value: ''}];
    }
    
    // Click handler for + button after enum value
    var userValueIndex = 1;
    $scope.addCandidateUserValue = function(index) {
        $scope.assignment.candidateUsers.splice(index + 1, 0, {value: 'value ' + userValueIndex++});
    };

    // Click handler for - button after enum value
    $scope.removeCandidateUserValue = function(index) {
        $scope.assignment.candidateUsers.splice(index, 1);
    };
    
    if ($scope.assignment.candidateGroups == undefined || $scope.assignment.candidateGroups.length == 0)
    {
    	$scope.assignment.candidateGroups = [{value: ''}];
    }
    
    var groupValueIndex = 1;
    $scope.addCandidateGroupValue = function(index) {
        $scope.assignment.candidateGroups.splice(index + 1, 0, {value: 'value ' + groupValueIndex++});
    };

    // Click handler for - button after enum value
    $scope.removeCandidateGroupValue = function(index) {
        $scope.assignment.candidateGroups.splice(index, 1);
    };

    $scope.save = function() {

        $scope.property.value = {};
        handleAssignmentInput($scope);
        $scope.property.value.assignment = $scope.assignment;
        
        $scope.updatePropertyInModel($scope.property);
        $scope.close();
    };
    $rootScope.$on('$includeContentLoaded', function (event) {
        //getUserGroup();
        getRole();
	});

    function getRole() {
        var roleUrl = KISBPM.URL.getRole();
        $http({method: 'GET', url: roleUrl}).
        success(function (data) {
            console.log("自动加载成功");
            console.log(data);
            $rootScope.roles=data;
        }).
        error(function (data) {
            console.log('自动加载失败');
        });
    }
  /*  function getUserGroup() {
      var modelUrl = KISBPM.URL.getUserGroup();
            $http({method: 'GET', url: modelUrl}).
        success(function (data) {
          console.log("自动加载成功");
          console.log(data);
                $rootScope.datas=data;
        }).
        error(function (data) {
            console.log('自动加载失败');
        });
    }
*/


    //var userGroupUrl = KISBPM.URL.getUserGroup();
/*    $rootScope.get_more = function(){
        var userGroupUrl = KISBPM.URL.getUserGroup();
        myUrl =userGroupUrl;
        $http({method: 'GET', url: myUrl}).
        success(function (data) {
            console.log("自动加载成功");
            console.log(data);
            $rootScope.datas=data;
        }).
        error(function (data) {
            console.log('自动加载失败');
        });
	};*/
    //获取角色
    $rootScope.get_Role = function(){
        var roleUrl = KISBPM.URL.getRole();
        myUrl =roleUrl;
        $http({method: 'GET', url: myUrl}).
        success(function (data) {
            console.log("获取角色成功");
            console.log(data);
            $rootScope.roles=data;
        }).
        error(function (data) {
            console.log('获取角色失败');
        });
    };

    //选择部门
    $rootScope.changeDepartment=function (companyId) {
        console.log('选择部门');
        console.log(companyId);
        var getUserGroupByCompany = KISBPM.URL.getUserGroupByCompany();
        myUrl =getUserGroupByCompany;
        $http({method: 'POST', url: myUrl, params:{'companyId':companyId
        }}).
        success(function (data) {
            console.log("获取部门成功");
            console.log(data);
            $rootScope.departments=data;
        }).
        error(function (data) {
            console.log('获取部门失败');
        });

    }
    //角色选择用户事件
    $rootScope.changeUser=function (roleId) {
        console.log('角色选择事件');
        console.log(roleId);
        var getUserGroupByRole= KISBPM.URL.getUserGroupByRole();
        myUrl =getUserGroupByRole;
        $http({method: 'POST', url: myUrl, params:{'roleId':roleId
        }}).
        success(function (data) {
            console.log("获取用户成功");
            console.log(data);
            $rootScope.datas=data;
        }).
        error(function (data) {
            console.log('获取用户失败');
        });

    }
    $scope.close = function() {
    	handleAssignmentInput($scope);
    	$scope.property.mode = 'read';
    	$scope.$hide();

    };
    
    var handleAssignmentInput = function($scope) {

        if ($scope.assignment.candidateRoles)
        {
            var emptyRoles = true;
            var toRemoveIndexes = [];
            for (var i = 0; i < $scope.assignment.candidateRoles.length; i++)
            {
                if ($scope.assignment.candidateRoles[i].value != '')
                {
                    emptyRoles = false;
                }
                else
                {
                    toRemoveIndexes[toRemoveIndexes.length] = i;
                }
            }

            for (var i = 0; i < toRemoveIndexes.length; i++)
            {
                $scope.assignment.candidateRoles.splice(toRemoveIndexes[i], 1);
            }

            if (emptyRoles)
            {
                $scope.assignment.candidateRoles = undefined;
            }
        }

    	if ($scope.assignment.candidateUsers)
    	{
	    	var emptyUsers = true;
	    	var toRemoveIndexes = [];
	        for (var i = 0; i < $scope.assignment.candidateUsers.length; i++)
	        {
	        	if ($scope.assignment.candidateUsers[i].value != '')
	        	{
	        		emptyUsers = false;
	        	}
	        	else
	        	{
	        		toRemoveIndexes[toRemoveIndexes.length] = i;
	        	}
	        }
	        
	        for (var i = 0; i < toRemoveIndexes.length; i++)
	        {
	        	$scope.assignment.candidateUsers.splice(toRemoveIndexes[i], 1);
	        }
	        
	        if (emptyUsers)
	        {
	        	$scope.assignment.candidateUsers = undefined;
	        }
    	}
        
    	if ($scope.assignment.candidateGroups)
    	{
	        var emptyGroups = true;
	        var toRemoveIndexes = [];
	        for (var i = 0; i < $scope.assignment.candidateGroups.length; i++)
	        {
	        	if ($scope.assignment.candidateGroups[i].value != '')
	        	{
	        		emptyGroups = false;
	        	}
	        	else
	        	{
	        		toRemoveIndexes[toRemoveIndexes.length] = i;
	        	}
	        }
	        
	        for (var i = 0; i < toRemoveIndexes.length; i++)
	        {
	        	$scope.assignment.candidateGroups.splice(toRemoveIndexes[i], 1);
	        }
	        
	        if (emptyGroups)
	        {
	        	$scope.assignment.candidateGroups = undefined;
	        }
    	}


        if ($scope.assignment.candidatePeoples)
        {
            var emptyPosition = true;
            var toRemoveIndexes = [];
            for (var i = 0; i < $scope.assignment.candidatePeoples.length; i++)
            {
                if ($scope.assignment.candidatePeoples[i].value != '')
                {
                    emptyPosition = false;
                }
                else
                {
                    toRemoveIndexes[toRemoveIndexes.length] = i;
                }
            }

            for (var i = 0; i < toRemoveIndexes.length; i++)
            {
                $scope.assignment.candidatePeoples.splice(toRemoveIndexes[i], 1);
            }

            if (emptyPosition)
            {
                $scope.assignment.candidatePeoples = undefined;
            }
        }
    };
}];